// 业务逻辑处理中间件
/**
 * 1. 第三层中间件
 * 2. 读取文件内容（实际开发中读取数据库）
 *  获取请求的路径， 拼接文件路径
 *  读取该路径对应文件的内容
 * 3. 设置响应体
 *  ctx.response.body
 */
// 拼接绝对路径的方法
const path = require('path')
// 读取文件内容的方法
const fileUtils = require('../utils/file')

module.exports = async (ctx, next) =>{
// 获取请求的url 
const url = ctx.request.url // ex: /api/seller
// 根据url拼接文件地址
let filePath = url.replace('/api','')  // /seller
filePath = '../data'+ filePath + '.json' // 拼接文件的相对路径
filePath = path.join(__dirname, filePath) // 获取文件的绝对路径

try{
  // 读取文件内容
  let res = await fileUtils.getFileJsonData(filePath)
  res = JSON.parse(res)
  const message = {
    status: 200,
    res: res
  }
  // 设置响应体
  ctx.response.body = message
}catch(error){
  const errorMessage = {
    message: '读取文件内容失败，文件资源不存在',
    status: 404
  }
  // 设置响应体
  ctx.response.body = errorMessage
}
// 保证内层中间件能正常执行
await next()
}